package com.sdhs.businessfile.service;

import java.util.List;

import com.sdhs.businessfile.domain.BusinessFile;
import com.sdhs.businessfile.domain.dto.BusinessFileDTO;

/**
 * 业务附件Service接口
 *
 * @author mz
 * @date 2024-07-30
 */
public interface IBusinessFileService {
    /**
     * 查询业务附件
     *
     * @param id 业务附件主键
     * @return 业务附件
     */
    public BusinessFile selectBusinessFileById(Long id);

    /**
     * 查询业务附件列表
     *
     * @param businessFile 业务附件
     * @return 业务附件集合
     */
    public List<BusinessFile> selectBusinessFileList(BusinessFileDTO businessFile);

    /**
     * 根据业务类型和业务id查询列表
     *
     * @param businessType 业务类型
     * @param businessId   业务id
     * @return 业务附件集合
     */
    public List<BusinessFile> listByBusinessTypeAndId(String businessType, String businessId);


    /**
     * 新增业务附件
     *
     * @param businessFile 业务附件
     * @return 结果
     */
    public int insertBusinessFile(BusinessFileDTO businessFile);

    /**
     * 修改业务附件
     *
     * @param businessFile 业务附件
     * @return 结果
     */
    public int updateBusinessFile(BusinessFileDTO businessFile);

    /**
     * 批量删除业务附件
     *
     * @param ids 需要删除的业务附件主键集合
     * @return 结果
     */
    public int deleteBusinessFileByIds(Long[] ids);

    /**
     * 删除业务附件信息
     *
     * @param id 业务附件主键
     * @return 结果
     */
    public int deleteBusinessFileById(Long id);

    /**
     * 根据业务类型和业务id删除
     *
     * @param businessType 业务类型
     * @param businessId   业务id
     * @return 业务附件集合
     */
    public Boolean deleteByBusinessTypeAndId(String businessType, String businessId);

    /**
     * 根据业务类型和业务id删除
     *
     * @param businessType 业务类型
     * @param businessId   业务id
     * @param userName   用户名
     * @return 业务附件集合
     */
    public Boolean deleteUserFileByBusinessTypeAndId(String businessType, String businessId,String userName);

    /**
     * 批量保存
     * @param businessType 业务类型
     * @param businessId 业务id
     * @param fileList 文件列表
     */
    void saveFileBatch(String businessType, String businessId,List<BusinessFile> fileList);

    /**
     * 删除自己上传的附件，并重新添加新附件列表
     * @author wang
     * @date 2024/8/31 9:12
     * @param businessType 业务类型
     * @param businessId 业务id
     * @param fileList 文件列表
     * @param userName 用户名
     * @return void
     */
    void saveUserFileBatch(String businessType, String businessId, List<BusinessFile> fileList,String userName);
}